SET IMPLICIT_TRANSACTIONS OFF
-- http://www.karaszi.com/SQLServer/info_datetime.asp
DECLARE
  @today	DATETIME,
  @wk_date	DATETIME,	-- first day of week
  @mm_date	DATETIME,	-- first day of month
  @qq_date	DATETIME,	-- first day of quarter
  @yy_date	DATETIME	-- first day of year

SET @today= GETDATE()

SELECT
  @mm_date = DATEADD(mm, DATEDIFF(mm, '20200101', GETDATE()), '20200101'),
  @qq_date = DATEADD(qq, DATEDIFF(qq, '20200101', GETDATE()), '20200101'),
  @yy_date = DATEADD(yy, DATEDIFF(yy, '20200101', GETDATE()), '20200101')

SELECT
	[Yesterday]	= DATEADD(dd, 0, DATEDIFF(dd, 1, @today)),
	[Today]		= DATEADD(dd, 0, DATEDIFF(dd, 0, @today)),
	[Tomorrow]	= DATEADD(dd, 1, DATEDIFF(dd, 0, @today)),
	[Su]		= DATEADD(dd, DATEDIFF(dd, '20120101', @today)/7*7, '20120101'),
	[Mo]		= DATEADD(dd, DATEDIFF(dd, '20120102', @today)/7*7, '20120102'),
	[Tu]		= DATEADD(dd, DATEDIFF(dd, '20120103', @today)/7*7, '20120103'),
	[We]		= DATEADD(dd, DATEDIFF(dd, '20120104', @today)/7*7, '20120104'),
	[Th]		= DATEADD(dd, DATEDIFF(dd, '20120105', @today)/7*7, '20120105'),
	[Fr]		= DATEADD(dd, DATEDIFF(dd, '20120106', @today)/7*7, '20120106'),
	[Sa]		= DATEADD(dd, DATEDIFF(dd, '20120107', @today)/7*7, '20120107'),
	[mm]		= DATEADD(mm, DATEDIFF(mm, '20120101', @today), '20120101'),
	[qq]		= DATEADD(qq, DATEDIFF(qq, '20120101', @today), '20120101'),
	[yy]		= DATEADD(yy, DATEDIFF(yy, '20120101', @today), '20120101')

-- Min and Max
SELECT 'DATETIME' AS [Type], CAST(-53690 AS DATETIME) AS Min_Date, CAST(2958463.99999999 AS DATETIME) AS Max_Date
UNION
SELECT 'SMALLDATETIME' AS [Type], CAST(0 AS SMALLDATETIME) AS Min_Date, CAST(65535.999 AS SMALLDATETIME) AS Max_Date
GO